home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1987-12-04 | 23.2 KB | 974 lines |
- 5 GOTO 10
- 7 SAVE"YAHTZEE.BAS":END
- 10 SCREEN 0,1,0
- 20 KEY OFF:WIDTH 80:CLS
- 30 FOR I = 1 TO 14
- 40 IF I=8 THEN 250
- 50 COLOR I
- 60 LOCATE 2,1
- 70 PRINT CHR$(201);STRING$(78,205);CHR$(187)
- 80 FOR ROW = 3 TO 13
- 90 LOCATE ROW,1:PRINT CHR$(186);:LOCATE ROW,80 :PRINT CHR$(186);
- 100 NEXT ROW
- 110 LOCATE 14,1
- 120 PRINT CHR$(200);STRING$(78,205);CHR$(188)
- 130 ABB$="Abbey & Son Software":ADD$="530 Troy Dr. #1"
- 140 CIT$="San Jose, CA. 95117-1354":TEL$="(408) 984-4947"
- 150 COP$="Copyright June & November 1987 By Ray Abbey"
- 160 TAK$="Please send $5.00 registration fee to Abbey & Son Software"
- 170 TAK2$="to recieve updates or fixes, as available, for one year."
- 180 LOCATE 4,(40-(LEN(ABB$)/2)):PRINT ABB$;
- 190 LOCATE 6,(40-(LEN(ADD$)/2)):PRINT ADD$;
- 200 LOCATE 8,(40-(LEN(CIT$)/2)):PRINT CIT$;
- 210 LOCATE 10,(40-(LEN(TEL$)/2)):PRINT TEL$;
- 220 LOCATE 12,(40-(LEN(COP$)/2)):PRINT COP$;
- 230 LOCATE 16,(80-LEN(TAK$))/2:PRINT TAK$;
- 240 LOCATE 18,(80-LEN(TAK2$))/2:PRINT TAK2$;
- 250 NEXT I
- 260 GOSUB 8140
- 270 LOCATE 20,27:PRINT "Press any key to continue."
- 280 K$=INKEY$:IF K$="" THEN 280
- 290 COLOR 2
- 300 IF LEN(INKEY$) THEN 300
- 310 CLEAR,,1000
- 320 WIDTH 40
- 330 FR1=17000:FR2=18000:FR3=19000:DU=3:VO=15:SW=1
- 340 DIM PLAYR$(4),TOTAL(4),KEEP(6,4),CHECK$(13)
- 350 DIM A(13),B(13),C(13),E(13)
- 360 DIM BLANK(50,50),WINNER(6,4)
- 370 CHECK$(1)="ACES":CHECK$(2)="TWOS":CHECK$(3)="THREES"
- 380 CHECK$(4)="FOURS":CHECK$(5)="FIVES":CHECK$(6)="SIXES"
- 390 CHECK$(7)="3 OF A KIND":CHECK$(8)="4 OF A KIND":CHECK$(9)="FULL HOUSE"
- 400 CHECK$(10)="SMALL STRAIGHT":CHECK$(11)="LARGE STRAIGHT"
- 410 CHECK$(12)="YAHTZEE":CHECK$(13)="CHANCE"
- 420 KEY(10) ON
- 430 KEY(9) ON
- 440 KEY(8) ON
- 450 ON KEY(10) GOSUB 7200
- 460 ON KEY(9) GOSUB 8170
- 470 ON KEY(8) GOSUB 8610
- 480 COLOR 6,0
- 490 VER$="PC YAHTZEE version 2.0"
- 500 COLOR 2
- 510 LOCATE 1,(40-LEN(VER$))/2:PRINT VER$;
- 520 PRINT:PRINT:COLOR 6,0
- 530 PRINT "CSRLIN CSRLIN CSRLINCSRLINCSRLINCSRLINCSRLIN CSRLINCSRLINCSRLINCSRLINCSRLIN CSRLINCSRLINCSRLINCSRLINCSRLIN CSRLINCSRLINCSRLINCSRLINCSRLIN CSRLINCSRLINCSRLINCSRLINCSRLIN"
- 540 PRINT "CSRLIN CSRLIN CSRLIN CSRLIN CSRLIN INKEY$OFF CSRLIN CSRLIN "
- 550 PRINT "CSRLIN CSRLIN CSRLIN CSRLIN CSRLIN CSRLIN CSRLIN CSRLIN "
- 560 PRINT "CSRLINCSRLINCSRLINCSRLINCSRLINCSRLINCSRLIN CSRLINCSRLINCSRLINCSRLINCSRLIN CSRLIN INKEY$OFF CSRLINCSRLINCSRLIN CSRLINCSRLINCSRLIN "
- 570 PRINT " CSRLIN CSRLIN CSRLIN CSRLIN INKEY$OFF CSRLIN CSRLIN "
- 580 PRINT " CSRLIN CSRLIN CSRLIN CSRLIN INKEY$OFF CSRLIN CSRLIN "
- 590 PRINT " CSRLIN CSRLIN CSRLIN CSRLIN CSRLINCSRLINCSRLINCSRLINCSRLIN CSRLINCSRLINCSRLINCSRLINCSRLIN CSRLINCSRLINCSRLINCSRLINCSRLIN"
- 600 PRINT
- 610 TR1$="Trademark Registered":TR2$="E. S. Lowe Company, Inc.":TR3$="200 Fifth Avenue":TR4$="New York, N.Y. 10010"
- 620 FUN$=" - Hot Keys - "
- 630 FUN1$="F8=Select Verify On/Off"
- 640 FUN2$="F9=Sound On/Off F10=Quit"
- 650 COLOR 4
- 660 LOCATE 12,(40-LEN(TR1$))/2:PRINT TR1$;
- 670 COLOR 5
- 680 LOCATE 13,(40-LEN(TR2$))/2:PRINT TR2$;
- 690 COLOR 9
- 700 LOCATE 14,(40-LEN(TR3$))/2:PRINT TR3$;
- 710 COLOR 10
- 720 LOCATE 15,(40-LEN(TR4$))/2:PRINT TR4$;
- 730 COLOR 12
- 740 LOCATE 17,(40-LEN(FUN$))/2:PRINT FUN$;
- 750 COLOR 11
- 760 LOCATE 18,(40-LEN(FUN1$))/2:PRINT FUN1$;
- 770 COLOR 13
- 780 LOCATE 19,(40-LEN(FUN2$))/2:PRINT FUN2$;
- 790 F24$="\ \"
- 800 F40$="\ \"
- 810 F80$="\ \"
- 820 QUE$="Do you wish instructions? (Y/N)"
- 830 GOSUB 8140
- 840 COLOR 6
- 850 LOCATE 22,(40-LEN(QUE$))/2:PRINT QUE$;
- 860 K$=INKEY$:IF K$="y" OR K$="Y" THEN GOSUB 9300:GOTO 890
- 870 IF K$="n" OR K$="N" THEN 900
- 880 GOTO 860
- 890 WIDTH 40:COLOR 4
- 900 FOR I=12 TO 22
- 910 LOCATE I,1
- 920 PRINT STRING$(40,32);
- 930 NEXT I
- 940 LOCATE 12,1
- 950 GOSUB 8140
- 960 PRINT "Player One - Enter first name, Please ";
- 970 INPUT;"Six letters maximum- ",PL1$
- 980 PLAYR$(1)=LEFT$(PL1$,6)
- 990 IF LEFT$(PL1$,1)="" THEN 940
- 1000 LOCATE 15,1
- 1010 PRINT "Player Two - Enter first name, Please ";
- 1020 GOSUB 8140
- 1030 INPUT;"Six letters maximum- ",PL2$
- 1040 IF LEFT$(PL2$,1)="" THEN PLAYERS = 1:GOTO 1190
- 1050 PLAYR$(2)=LEFT$(PL2$,6)
- 1060 LOCATE 18,1
- 1070 PRINT "Player Three-Enter first name, Please ";
- 1080 GOSUB 8140
- 1090 INPUT;"Six letters maximum- ",PL3$
- 1100 IF LEFT$(PL3$,1)="" THEN PLAYERS = 2:GOTO 1190
- 1110 PLAYR$(3)=LEFT$(PL3$,6)
- 1120 LOCATE 21,1
- 1130 PRINT "Player Four -Enter first name, Please ";
- 1140 GOSUB 8140
- 1150 INPUT;"Six letters maximum- ",PL4$
- 1160 IF LEFT$(PL4$,1)="" THEN PLAYERS = 3:GOTO 1190
- 1170 PLAYR$(4)=LEFT$(PL4$,6)
- 1180 PLAYERS = 4
- 1190 LOCATE 12,1
- 1200 FOR I=1 TO 12
- 1210 PRINT STRING$(40,32);
- 1220 NEXT I
- 1230 GOTO 1260
- 1240 SCREEN 0,1,0:WIDTH 40:COLOR 6'Second thru sixth game starts here
- 1250 FIRST=0:SECOND=0:THIRD=0:FOURTH=0
- 1260 COLOR 11:LOCATE 12,5
- 1270 PRINT "Player number one is : ";PLAYR$(1);
- 1280 FOR I=1 TO 13
- 1290 A(I)=0:NEXT I
- 1300 IF PLAYERS = 1 THEN 1450
- 1310 LOCATE 14,5
- 1320 PRINT "Player number two is : ";PLAYR$(2);
- 1330 FOR I=1 TO 13
- 1340 B(I)=0:NEXT I
- 1350 IF PLAYERS = 2 THEN 1450
- 1360 LOCATE 16,5
- 1370 PRINT "Player number three is: ";PLAYR$(3);
- 1380 FOR I=1 TO 13
- 1390 C(I)=0:NEXT I
- 1400 IF PLAYERS = 3 THEN 1450
- 1410 LOCATE 18,5
- 1420 PRINT "Player number four is : ";PLAYR$(4);
- 1430 FOR I=1 TO 13
- 1440 E(I)=0:NEXT I
- 1450 LOCATE 20,6
- 1460 PRINT "Are we ready to play? (Y/N) ";
- 1470 GOSUB 8140
- 1480 K$=INKEY$
- 1490 IF K$="Y" OR K$="y" THEN 1650
- 1500 IF K$="N" OR K$="n" THEN 1520
- 1510 GOTO 1480
- 1520 IF GAME=0 THEN 890
- 1530 'Add new players
- 1540 LOCATE 21,4:IF LEN(INKEY$) THEN 1540
- 1550 PRINT "Do you wish to add players? (Y/N)"
- 1560 K$=INKEY$:IF K$="N" OR K$="n" THEN 1650
- 1570 IF K$="" THEN 1560
- 1580 CLS:IF LEN(INKEY$) THEN 1580
- 1590 IF PLAYERS=1 THEN 1000
- 1600 IF PLAYERS=2 THEN 1060
- 1610 IF PLAYERS=3 THEN 1120
- 1620 LOCATE 23,4
- 1630 PRINT "Four players maximum, thank you."
- 1640 FOR WA =1 TO 3000:NEXT WA
- 1650 'insert screen set-up here
- 1660 WIDTH 80
- 1670 'SCORE SHEET
- 1680 '
- 1690 COLOR 2,0
- 1700 IF LEN(INKEY$) THEN 1700
- 1710 LOCATE 1,1
- 1720 IF PLAYERS=1 THEN PRINT " YAHTZEE PLAYER ";
- 1730 IF PLAYERS=2 THEN PRINT " YAHTZEE PLAYER PLAYER ";
- 1740 IF PLAYERS=3 THEN PRINT " YAHTZEE PLAYER PLAYER PLAYER ";
- 1750 IF PLAYERS=4 THEN PRINT " YAHTZEE PLAYER PLAYER PLAYER PLAYER ";
- 1760 LOCATE 2,1
- 1770 IF PLAYERS=1 THEN PRINT "UPPER SECTION #1 ";
- 1780 IF PLAYERS=2 THEN PRINT "UPPER SECTION #1 #2 ";
- 1790 IF PLAYERS=3 THEN PRINT "UPPER SECTION #1 #2 #3 ";
- 1800 IF PLAYERS=4 THEN PRINT "UPPER SECTION #1 #2 #3 #4 ";
- 1810 LOCATE 3,1
- 1820 COLOR 13
- 1830 PRINT "1";:COLOR 2:PRINT "> ACES";
- 1840 LOCATE 4,1
- 1850 COLOR 13
- 1860 PRINT "2";:COLOR 2:PRINT "> TWOS";
- 1870 LOCATE 5,1
- 1880 COLOR 13
- 1890 PRINT "3";:COLOR 2:PRINT "> THREES";
- 1900 LOCATE 6,1
- 1910 COLOR 13
- 1920 PRINT "4";:COLOR 2:PRINT "> FOURS";
- 1930 LOCATE 7,1
- 1940 COLOR 13
- 1950 PRINT "5";:COLOR 2:PRINT "> FIVES";
- 1960 LOCATE 8,1
- 1970 COLOR 13
- 1980 PRINT "6";:COLOR 2:PRINT "> SIXES";
- 1990 LOCATE 9,1
- 2000 PRINT "Totals";
- 2010 LOCATE 10,1
- 2020 PRINT "Bonus if > 62";
- 2030 LOCATE 11,1
- 2040 PRINT "Total w/Bonus";
- 2050 LOCATE 12,1
- 2060 IF PLAYERS=1 THEN PRINT "LOWER SECTION #1 ";
- 2070 IF PLAYERS=2 THEN PRINT "LOWER SECTION #1 #2 ";
- 2080 IF PLAYERS=3 THEN PRINT "LOWER SECTION #1 #2 #3 ";
- 2090 IF PLAYERS=4 THEN PRINT "LOWER SECTION #1 #2 #3 #4 ";
- 2100 LOCATE 13,1
- 2110 COLOR 13
- 2120 PRINT "7";:COLOR 2:PRINT "> 3 of a Kind";
- 2130 LOCATE 14,1
- 2140 COLOR 13
- 2150 PRINT "8";:COLOR 2:PRINT "> 4 of a Kind";
- 2160 LOCATE 15,1
- 2170 COLOR 13
- 2180 PRINT "9";:COLOR 2:PRINT "> Full House";
- 2190 LOCATE 16,1
- 2200 COLOR 13
- 2210 PRINT "A";:COLOR 2:PRINT "> Sm Straight";
- 2220 LOCATE 17,1
- 2230 COLOR 13
- 2240 PRINT "B";:COLOR 2:PRINT "> Lg Straight";
- 2250 LOCATE 18,1
- 2260 COLOR 13
- 2270 PRINT "C";:COLOR 2:PRINT "> YAHTZEE";
- 2280 LOCATE 19,1
- 2290 COLOR 13
- 2300 PRINT "D";:COLOR 2:PRINT "> Chance";
- 2310 LOCATE 20,1
- 2320 PRINT "Lower Total";
- 2330 LOCATE 21,1
- 2340 PRINT "Upper Total";
- 2350 LOCATE 22,1
- 2360 PRINT "GRAND TOTAL";
- 2370 FOR I=3 TO 22
- 2380 BORDER$="|"
- 2390 IF I=9 OR I=10 OR I=11 OR I=20 OR I=21 OR I=22 THEN COLOR 12:BORDER$="INSTR"
- 2400 LOCATE I,15:PRINT BORDER$;
- 2410 LOCATE I,23:PRINT BORDER$;
- 2420 IF PLAYERS=1 THEN 2480
- 2430 LOCATE I,31:PRINT BORDER$;
- 2440 IF PLAYERS=2 THEN 2480
- 2450 LOCATE I,39:PRINT BORDER$;
- 2460 IF PLAYERS=3 THEN 2480
- 2470 LOCATE I,47:PRINT BORDER$;
- 2480 COLOR 2:BORDER$="|"
- 2490 NEXT I
- 2500 'module to place dice on screen
- 2510 GOSUB 3940:COLOR 9,4
- 2520 LOCATE 15,49
- 2530 PRINT CHR$(201);:FOR I=1 TO 5
- 2540 PRINT STRING$(5,205);CHR$(203);
- 2550 NEXT:LOCATE CSRLIN,POS(C)-1
- 2560 PRINT CHR$(187);:ROW=15:COL=49
- 2570 FOR X=1 TO 3:LOCATE ROW+X,COL:FOR I=49 TO 80 STEP 6
- 2580 LOCATE ROW+X,I:PRINT CHR$(186);
- 2590 NEXT:NEXT:LOCATE 19,49
- 2600 PRINT CHR$(200);:FOR I=1 TO 5
- 2610 PRINT STRING$(5,205);CHR$(202);
- 2620 NEXT :LOCATE CSRLIN,POS(C)-1:PRINT CHR$(188);
- 2630 COLOR 2,0:LOCATE 20,51:FOR I=1 TO 5
- 2640 PRINT I;" ";
- 2650 NEXT
- 2660 GOSUB 3940
- 2670 LOCATE 6,50
- 2680 PRINT "F10-Quit";
- 2690 GOSUB 8170:GOSUB 8610
- 2700 GOSUB 8170:GOSUB 8610
- 2710 '
- 2720 GOSUB 3950
- 2730 FOR TURN = 1 TO 13
- 2740 FOR PLAYER = 1 TO PLAYERS
- 2750 GOSUB 3940:COLOR 0,4
- 2760 LOCATE 16,50:C=50:GOSUB 9680
- 2770 LOCATE 16,56:C=56:GOSUB 9680
- 2780 LOCATE 16,62:C=62:GOSUB 9680
- 2790 LOCATE 16,68:C=68:GOSUB 9680
- 2800 LOCATE 16,74:C=74:GOSUB 9680
- 2810 COLOR 2,0
- 2820 LOCATE 11,62:PRINT "Player";
- 2830 COLOR 14,0
- 2840 LOCATE 12,62:PRINT USING "\ \";PLAYR$(PLAYER);
- 2850 COLOR 2,0
- 2860 GOSUB 3950
- 2870 LOCATE 25,10
- 2880 PRINT "It's your turn ";PLAYR$(PLAYER);", press any key to roll the dice.";
- 2890 GOSUB 8140
- 2900 K$=INKEY$:IF K$="" THEN 2900
- 2910 GOSUB 8580
- 2920 IF LEN(INKEY$) THEN 2920
- 2930 COLOR 0,4:GOSUB 3310:COLOR 2,0:GOSUB 4810:GOSUB 5090:GOSUB 4530:GOSUB 3960
- 2940 GOSUB 3950
- 2950 NEXT PLAYER
- 2960 NEXT TURN
- 2970 IF T4 > T14 AND T4 > T24 AND T4 >T34 THEN 3010 'Player 1 winner
- 2980 IF T14 > T4 AND T14 > T24 AND T14 >T34 THEN 3060 'Player 2 winner
- 2990 IF T24 > T4 AND T24 > T14 AND T24 >T34 THEN 3110 'Player 3 winner
- 3000 IF T34 > T4 AND T34 > T14 AND T34 >T24 THEN 3160 'Player 4 winner
- 3010 GOSUB 8580
- 3020 LOCATE 25,26
- 3030 PRINT " You are the winner, ";PLAYR$(1);
- 3040 GOSUB 8330:WIN=1:GOSUB 8560
- 3050 GOTO 3210
- 3060 GOSUB 8580
- 3070 LOCATE 25,26
- 3080 PRINT " You are the winner, ";PLAYR$(2);
- 3090 GOSUB 8330:WIN=2:GOSUB 8560
- 3100 GOTO 3210
- 3110 GOSUB 8580
- 3120 LOCATE 25,26
- 3130 PRINT " You are the winner, ";PLAYR$(3);
- 3140 GOSUB 8330:WIN=3:GOSUB 8560
- 3150 GOTO 3210
- 3160 GOSUB 8580
- 3170 LOCATE 25,26
- 3180 PRINT " You are the winner, ";PLAYR$(4);
- 3190 GOSUB 8330:WIN=4:GOSUB 8560
- 3200 GOTO 3210
- 3210 LOCATE 24,25
- 3220 PRINT "How about another game? (Y/N)";
- 3230 GOSUB 8140
- 3240 K$=INKEY$:IF K$="Y" OR K$="y" THEN GOTO 3270
- 3250 IF K$="N" OR K$="n" THEN GAME=GAME+1:GOSUB 7380:GOTO 7280
- 3260 GOTO 3240
- 3270 GAME=GAME+1
- 3280 IF LEN(INKEY$) THEN 3280
- 3290 GOSUB 7380
- 3300 GOTO 1240
- 3310 GOSUB 3940 'module to roll dice
- 3320 RANDOMIZE ((RND*1000)+1)
- 3330 COLOR 0,4
- 3340 GOSUB 3540:GOSUB 8070:GOSUB 3580:GOSUB 8070:GOSUB 3620:GOSUB 8070:GOSUB 3660:GOSUB 8070:GOSUB 3700
- 3350 GOSUB 3950:LOCATE 25,15
- 3360 DICE$="":IF LEN(INKEY$) THEN 3360
- 3370 GOSUB 8140:COLOR 2,0
- 3380 PRINT "Enter dice to reroll (12345) Second Roll- Press 'R' to Roll";
- 3390 GOSUB 3940:GOSUB 9190
- 3400 COLOR 2,0:GOSUB 8580
- 3410 IF DICE$="" THEN 3530
- 3420 GOSUB 9060
- 3430 COLOR 2,0:GOSUB 8580
- 3440 DICE$="":IF LEN(INKEY$) THEN 3440
- 3450 LOCATE 25,15
- 3460 GOSUB 8140
- 3470 PRINT "Enter dice to reroll (12345) Third Roll- Press 'R' to Roll";
- 3480 GOSUB 3940:GOSUB 9190
- 3490 COLOR 2,0:GOSUB 8580
- 3500 IF DICE$="" THEN 3530
- 3510 GOSUB 9060
- 3520 COLOR 2,0:GOSUB 8580
- 3530 RETURN
- 3540 ONE=INT(RND*6+1):D=0
- 3550 IF ONE <1 OR ONE >6 THEN 3540
- 3560 ON ONE GOSUB 3740,3750,3760,3770,3780,3790
- 3570 RETURN
- 3580 TWO=INT(RND*6+1):D=6
- 3590 IF TWO <1 OR TWO >6 THEN 3580
- 3600 ON TWO GOSUB 3740,3750,3760,3770,3780,3790
- 3610 RETURN
- 3620 THREE=INT(RND*6+1):D=12
- 3630 IF THREE <1 OR THREE >6 THEN 3620
- 3640 ON THREE GOSUB 3740,3750,3760,3770,3780,3790
- 3650 RETURN
- 3660 FOUR=INT(RND*6+1):D=18
- 3670 IF FOUR <1 OR FOUR >6 THEN 3660
- 3680 ON FOUR GOSUB 3740,3750,3760,3770,3780,3790
- 3690 RETURN
- 3700 FIVE=INT(RND*6+1):D=24
- 3710 IF FIVE <1 OR FIVE >6 THEN 3700
- 3720 ON FIVE GOSUB 3740,3750,3760,3770,3780,3790
- 3730 RETURN
- 3740 GOSUB 3800 :RETURN 'for snake eye
- 3750 GOSUB 3860:GOSUB 3880:RETURN ' two
- 3760 GOSUB 3860:GOSUB 3880:GOSUB 3800:RETURN 'three
- 3770 GOSUB 3860:GOSUB 3880:GOSUB 3900:GOSUB 3920:RETURN 'four
- 3780 GOSUB 3800:GOSUB 3860:GOSUB 3880:GOSUB 3900:GOSUB 3920:RETURN 'five
- 3790 GOSUB 3820:GOSUB 3840:GOSUB 3860:GOSUB 3880:GOSUB 3900:GOSUB 3920:RETURN 'six
- 3800 LOCATE 17,52+D ' used as 1 3 5
- 3810 PRINT CHR$(237);:RETURN
- 3820 LOCATE 17,50+D ' used as 6
- 3830 PRINT CHR$(237);:RETURN
- 3840 LOCATE 17,54+D ' used as 6
- 3850 PRINT CHR$(237);:RETURN
- 3860 LOCATE 18,50+D ' used as 2 3 4 5 6
- 3870 PRINT CHR$(237);:RETURN
- 3880 LOCATE 16,54+D ' used as 2 3 4 5 6
- 3890 PRINT CHR$(237);:RETURN
- 3900 LOCATE 18,54+D ' used as 4 5 6
- 3910 PRINT CHR$(237);:RETURN
- 3920 LOCATE 16,50+D ' used as 4 5 6
- 3930 PRINT CHR$(237);:RETURN
- 3940 RETURN
- 3950 RETURN
- 3960 T1=0:T11=0:T21=0:T31=0:T3=0:T13=0:T23=0:T33=0
- 3970 FOR I=1 TO 6 'RECALC ALL TOTALS-ALL PLAYERS
- 3980 T1=T1+A(I)
- 3990 T11=T11+B(I)
- 4000 T21=T21+C(I)
- 4010 T31=T31+E(I)
- 4020 NEXT I
- 4030 GOSUB 3940
- 4040 T2=T1:T12=T11:T22=T21:T32=T31
- 4050 IF T1>62 THEN T2=T1+35:LOCATE 10,19:PRINT "35";
- 4060 IF T11>62 THEN T12=T11+35:LOCATE 10,27:PRINT "35";
- 4070 IF T21>62 THEN T22=T21+35:LOCATE 10,35:PRINT "35";
- 4080 IF T31>62 THEN T32=T31+35:LOCATE 10,43:PRINT "35";
- 4090 FOR I=7 TO 13
- 4100 T3=T3+A(I)
- 4110 T13=T13+B(I)
- 4120 T23=T23+C(I)
- 4130 T33=T33+E(I)
- 4140 NEXT I
- 4150 T4=T3+T2+T5
- 4160 T14=T13+T12+T15
- 4170 T24=T23+T22+T25
- 4180 T34=T33+T32+T35
- 4190 GOSUB 3940
- 4200 BORD$=" INSTR "
- 4210 IF PLAYERS=1 THEN FORMAT$="####"
- 4220 IF PLAYERS=2 THEN FORMAT$="####"+BORD$+"####"
- 4230 IF PLAYERS=3 THEN FORMAT$="####"+BORD$+"####"+BORD$+"####"
- 4240 IF PLAYERS=4 THEN FORMAT$="####"+BORD$+"####"+BORD$+"####"+BORD$+"####"
- 4250 COLOR 12
- 4260 LOCATE 9,17
- 4270 IF PLAYERS=1 THEN PRINT USING FORMAT$;T1;
- 4280 IF PLAYERS=2 THEN PRINT USING FORMAT$;T1,T11;
- 4290 IF PLAYERS=3 THEN PRINT USING FORMAT$;T1,T11,T21;
- 4300 IF PLAYERS=4 THEN PRINT USING FORMAT$;T1,T11,T21,T31;
- 4310 LOCATE 11,17
- 4320 IF PLAYERS=1 THEN PRINT USING FORMAT$;T2;
- 4330 IF PLAYERS=2 THEN PRINT USING FORMAT$;T2,T12;
- 4340 IF PLAYERS=3 THEN PRINT USING FORMAT$;T2,T12,T22;
- 4350 IF PLAYERS=4 THEN PRINT USING FORMAT$;T2,T12,T22,T32;
- 4360 LOCATE 20,17
- 4370 IF PLAYERS=1 THEN PRINT USING FORMAT$;T3;
- 4380 IF PLAYERS=2 THEN PRINT USING FORMAT$;T3,T13;
- 4390 IF PLAYERS=3 THEN PRINT USING FORMAT$;T3,T13,T23;
- 4400 IF PLAYERS=4 THEN PRINT USING FORMAT$;T3,T13,T23,T33;
- 4410 LOCATE 21,17
- 4420 IF PLAYERS=1 THEN PRINT USING FORMAT$;T2;
- 4430 IF PLAYERS=2 THEN PRINT USING FORMAT$;T2,T12;
- 4440 IF PLAYERS=3 THEN PRINT USING FORMAT$;T2,T12,T22;
- 4450 IF PLAYERS=4 THEN PRINT USING FORMAT$;T2,T12,T22,T32;
- 4460 LOCATE 22,17
- 4470 IF PLAYERS=1 THEN PRINT USING FORMAT$;T4;
- 4480 IF PLAYERS=2 THEN PRINT USING FORMAT$;T4,T14;
- 4490 IF PLAYERS=3 THEN PRINT USING FORMAT$;T4,T14,T24;
- 4500 IF PLAYERS=4 THEN PRINT USING FORMAT$;T4,T14,T24,T34;
- 4510 COLOR 2
- 4520 RETURN
- 4530 'PRINT SCORES TO SCREEN
- 4540 IF PLAYER =1 THEN COL = 18
- 4550 IF PLAYER =2 THEN COL = 26
- 4560 IF PLAYER =3 THEN COL = 34
- 4570 IF PLAYER =4 THEN COL = 42
- 4580 IF PLAYER <1 OR PLAYER>4 THEN END
- 4590 GOSUB 3940
- 4600 POST=SELECT
- 4610 LOCATE 2,COL-1
- 4620 COLOR 14,0
- 4630 PRINT USING "\ \"; PLAYR$(PLAYER);
- 4640 COLOR 2,O
- 4650 ROW = POST + 2
- 4660 IF POST > 6 THEN ROW = POST + 6
- 4670 LOCATE ROW,COL
- 4680 PRINT USING "###";SCORE;
- 4690 ON PLAYER GOSUB 4710,4730,4750,4770
- 4700 GOTO 4790
- 4710 A(POST)=SCORE
- 4720 RETURN
- 4730 B(POST)=SCORE
- 4740 RETURN
- 4750 C(POST)=SCORE
- 4760 RETURN
- 4770 E(POST)=SCORE
- 4780 '
- 4790 SCORE=0
- 4800 RETURN
- 4810 'Get select from player
- 4820 NO=0
- 4830 GOSUB 3950
- 4840 LOCATE 25,16
- 4850 COLOR 4,0
- 4860 PRINT PLAYR$(PLAYER);", press key to select where to post score.";
- 4870 COLOR 2,0
- 4880 GOSUB 8140
- 4890 GOSUB 9500
- 4900 GOSUB 8580
- 4910 IF SELECT <1 OR SELECT >13 THEN GOTO 4840
- 4920 IF PLAYER =1 THEN COL = 20
- 4930 IF PLAYER =2 THEN COL = 28
- 4940 IF PLAYER =3 THEN COL = 36
- 4950 IF PLAYER =4 THEN COL = 44
- 4960 ROW = SELECT + 2
- 4970 IF SELECT >6 THEN ROW = SELECT + 6
- 4980 GOSUB 3940
- 4990 IF SCREEN(ROW,COL) >47 THEN 5010
- 5000 RETURN
- 5010 GOSUB 3950
- 5020 GOSUB 8580
- 5030 LOCATE 25,10
- 5040 PRINT "That's been selected. Pick again.";
- 5050 BEEP
- 5060 FOR I=1 TO 1300:NEXT I
- 5070 GOSUB 8580
- 5080 GOTO 4840
- 5090 'DETERMINE SCORE OF DICE
- 5100 SC(1)=ONE
- 5110 SC(2)=TWO
- 5120 SC(3)=THREE
- 5130 SC(4)=FOUR
- 5140 SC(5)=FIVE
- 5150 FOR I=1 TO 4
- 5160 FOR J =I+1 TO 5
- 5170 IF SC(I) > SC(J) THEN SWAP SC(I),SC(J)
- 5180 NEXT J
- 5190 NEXT I
- 5200 IF SC(1)=SC(2) AND SC(2)=SC(3) AND SC(3)=SC(4) AND SC(4)=SC(5) THEN 5230
- 5210 SCORE = 0
- 5220 GOTO 5810
- 5230 GOSUB 3950
- 5240 COLOR 18,0
- 5250 GOSUB 8580
- 5260 LOCATE 25,18
- 5270 PRINT "YAHTZEE YAHTZEE YAHTZEE YAHTZEE";
- 5280 GOSUB 8270
- 5290 COLOR 2,0
- 5300 ON PLAYER GOTO 5310,5330,5350,5370
- 5310 IF FIRST=0 THEN FIRST=1:GOTO 5390
- 5320 IF FIRST=1 THEN T5=T5+100:GOTO 5390
- 5330 IF SECOND=0 THEN SECOND=1 :GOTO 5390
- 5340 IF SECOND=1 THEN T15=T15+100:GOTO 5390
- 5350 IF THIRD=0 THEN THIRD=1:GOTO 5390
- 5360 IF THIRD=1 THEN T25=T25+100:GOTO 5390
- 5370 IF FOURTH=0 THEN FOURTH=1:GOTO 5390
- 5380 IF FOURTH=1 THEN T35=T35+100:GOTO 5390
- 5390 IF SELECT=12 GOTO 5810
- 5400 ROW=18:GOSUB 5680:ROW =0:IF PICK=0 THEN SELECT=12:GOTO 5810
- 5410 IF SC(1)=1 THEN SELECT=1:SCORE=5
- 5420 IF SC(1)=2 THEN SELECT=2:SCORE=10
- 5430 IF SC(1)=3 THEN SELECT=3:SCORE=15
- 5440 IF SC(1)=4 THEN SELECT=4:SCORE=20
- 5450 IF SC(1)=5 THEN SELECT=5:SCORE=25
- 5460 IF SC(1)=6 THEN SELECT=6:SCORE=30
- 5470 GOSUB 5680
- 5480 IF PICK=0 THEN RETURN
- 5490 SELECT=0:SCORE=0
- 5500 GOSUB 3950:GOSUB 5600
- 5510 IF SELECT =7 OR SELECT =8 OR SELECT =13 THEN 5810
- 5520 IF SELECT=9 THEN SCORE = 25
- 5530 IF SELECT=10 THEN SCORE=30
- 5540 IF SELECT=11 THEN SCORE=40
- 5550 RETURN
- 5560 GOSUB 3950:LOCATE 24,10
- 5570 BEEP
- 5580 PRINT "You ignoramus, ";PLAYR$(PLAYER);" pick an open slot for this yahtzee.";
- 5590 GOTO 5620
- 5600 LOCATE 24,10
- 5610 PRINT "Since the appropriate box in the UPPER section has been used, then...";
- 5620 LOCATE 25,1
- 5630 PRINT "This Yahtzee can be a JOKER in the lower section. Pick 7, 8, 9, A, B or D";
- 5640 GOSUB 8140
- 5650 GOSUB 9500
- 5660 GOSUB 8580
- 5670 IF SELECT <7 THEN SCORE =0:RETURN
- 5680 IF PLAYER =1 THEN COL = 20
- 5690 IF PLAYER =2 THEN COL = 28
- 5700 IF PLAYER =3 THEN COL = 36
- 5710 IF PLAYER =4 THEN COL = 44
- 5720 IF ROW=18 THEN 5780
- 5730 IF SELECT <7 THEN ROW=SELECT+2:GOTO 5780
- 5740 ROW = SELECT + 6
- 5750 GOSUB 3940
- 5760 IF SCREEN(ROW,COL) >47 THEN 5560
- 5770 RETURN
- 5780 GOSUB 3940:PICK=0
- 5790 IF SCREEN(ROW,COL) >47 THEN PICK=1
- 5800 RETURN
- 5810 IF SELECT =1 THEN 5820 ELSE 5880
- 5820 FOR I=1 TO 5
- 5830 IF SC(I)=1 THEN SCORE = SCORE +1
- 5840 NEXT I
- 5850 GOSUB 8440
- 5860 IF NO=1 THEN GOSUB 4810:GOTO 5810
- 5870 RETURN
- 5880 IF SELECT =2 THEN 5890 ELSE 5950
- 5890 FOR I=1 TO 5
- 5900 IF SC(I)=2 THEN SCORE = SCORE +2
- 5910 NEXT I
- 5920 GOSUB 8440
- 5930 IF NO=1 THEN GOSUB 4810:GOTO 5810
- 5940 RETURN
- 5950 IF SELECT =3 THEN 5960 ELSE 6020
- 5960 FOR I=1 TO 5
- 5970 IF SC(I)=3 THEN SCORE = SCORE +3
- 5980 NEXT I
- 5990 GOSUB 8440
- 6000 IF NO=1 THEN GOSUB 4810:GOTO 5810
- 6010 RETURN
- 6020 IF SELECT =4 THEN 6030 ELSE 6090
- 6030 FOR I=1 TO 5
- 6040 IF SC(I)=4 THEN SCORE = SCORE +4
- 6050 NEXT I
- 6060 GOSUB 8440
- 6070 IF NO=1 THEN GOSUB 4810:GOTO 5810
- 6080 RETURN
- 6090 IF SELECT =5 THEN 6100 ELSE 6160
- 6100 FOR I=1 TO 5
- 6110 IF SC(I)=5 THEN SCORE = SCORE +5
- 6120 NEXT I
- 6130 GOSUB 8440
- 6140 IF NO=1 THEN GOSUB 4810:GOTO 5810
- 6150 RETURN
- 6160 IF SELECT =6 THEN 6170 ELSE 6230
- 6170 FOR I=1 TO 5
- 6180 IF SC(I)=6 THEN SCORE = SCORE +6
- 6190 NEXT I
- 6200 GOSUB 8440
- 6210 IF NO=1 THEN GOSUB 4810:GOTO 5810
- 6220 RETURN
- 6230 IF SELECT =7 THEN 6240 ELSE 6340
- 6240 IF SC(1)=SC(2) AND SC(2)=SC(3) THEN 6280
- 6250 IF SC(2)=SC(3) AND SC(3)=SC(4) THEN 6280
- 6260 IF SC(3)=SC(4) AND SC(4)=SC(5) THEN 6280
- 6270 GOTO 6760
- 6280 FOR I=1 TO 5
- 6290 SCORE=SCORE + SC(I)
- 6300 NEXT I
- 6310 GOSUB 8440
- 6320 IF NO=1 THEN GOSUB 4810:GOTO 5810
- 6330 RETURN
- 6340 IF SELECT = 8 THEN 6350 ELSE 6440
- 6350 GOSUB 8440
- 6360 IF NO=1 THEN GOSUB 4810:GOTO 5810
- 6370 IF SC(1)=SC(2) AND SC(2)=SC(3) AND SC(3)=SC(4) THEN 6400
- 6380 IF SC(2)=SC(3) AND SC(3)=SC(4) AND SC(4)=SC(5) THEN 6400
- 6390 GOTO 6760
- 6400 FOR I=1 TO 5
- 6410 SCORE=SCORE + SC(I)
- 6420 NEXT I
- 6430 RETURN
- 6440 IF SELECT = 9 THEN 6450 ELSE 6500
- 6450 GOSUB 8440
- 6460 IF NO=1 THEN GOSUB 4810:GOTO 5810
- 6470 IF SC(1) = SC(2) AND SC(2) = SC(3) AND SC(4) = SC(5) THEN SCORE = 25
- 6480 IF SC(1) = SC(2) AND SC(3) = SC(4) AND SC(4) = SC(5) THEN SCORE = 25
- 6490 IF SCORE <> 25 THEN 6760
- 6500 IF SELECT = 10 THEN 6510 ELSE 6580
- 6510 GOSUB 8440
- 6520 IF NO=1 THEN GOSUB 4810:GOTO 5810
- 6530 IF SC(1)=SC(2)-1 AND SC(2) = SC(3)-1 AND SC(3)=SC(4)-1 THEN SCORE = 30:RETURN
- 6540 IF SC(2)=SC(3)-1 AND SC(3) = SC(4)-1 AND SC(4)=SC(5)-1 THEN SCORE = 30:RETURN
- 6550 IF SC(1)=SC(2)-1 AND SC(2)=SC(3) AND SC(3)=SC(4)-1 AND SC(4)=SC(5)-1 THEN SCORE = 30:RETURN
- 6560 IF SC(1)=SC(2)-1 AND SC(2)=SC(3)-1 AND SC(3)=SC(4) AND SC(4)=SC(5)-1 THEN SCORE = 30:RETURN
- 6570 GOTO 6760
- 6580 IF SELECT = 11 THEN 6590 ELSE 6630
- 6590 GOSUB 8440
- 6600 IF NO=1 THEN GOSUB 4810:GOTO 5810
- 6610 IF SC(1)=SC(2)-1 AND SC(2) = SC(3)-1 AND SC(3)=SC(4)-1 AND SC(4)=SC(5)-1 THEN SCORE = 40:RETURN
- 6620 GOTO 6760
- 6630 IF SELECT = 12 THEN 6640 ELSE 6680
- 6640 GOSUB 8440
- 6650 IF NO=1 THEN GOSUB 4810:GOTO 5810
- 6660 IF SC(1) = SC(2) AND SC(2) = SC(3) AND SC(3) = SC(4) AND SC(4) = SC(5) THEN SCORE = 50:RETURN
- 6670 GOTO 6760
- 6680 IF SELECT = 13 THEN 6690 ELSE RETURN
- 6690 GOSUB 8440
- 6700 IF NO=1 THEN GOSUB 4810:GOTO 5810
- 6710 SCORE = 0
- 6720 FOR I=1 TO 5
- 6730 SCORE = SCORE + SC(I)
- 6740 NEXT I
- 6750 RETURN
- 6760 'select reject module
- 6770 GOSUB 3950
- 6780 REJECT = SELECT - 6
- 6790 ON REJECT GOTO 6840,6900,6960,7020,7080,7140
- 6800 SCORE = 0
- 6810 ZERO=0
- 6820 GOSUB 8580
- 6830 RETURN
- 6840 '3 of a kind - no way
- 6850 IF SW=0 THEN 6860 ELSE BEEP
- 6860 LOCATE 24,10:PRINT "Are you blind ";PLAYR$(PLAYER);", this ain't no 3 of a kind!";
- 6870 GOSUB 8390
- 6880 IF ZERO=1 THEN 6800
- 6890 GOTO 5090
- 6900 '4 of a kind - no way
- 6910 IF SW=0 THEN 6920 ELSE BEEP
- 6920 LOCATE 24,10:PRINT "You make me laugh ";PLAYR$(PLAYER);", this ain't no 4 of a kind!";
- 6930 GOSUB 8390
- 6940 IF ZERO=1 THEN 6800
- 6950 GOTO 5090
- 6960 'Full House - no way
- 6970 IF SW=0 THEN 6980 ELSE BEEP
- 6980 LOCATE 24,17:PRINT "Hey, ";PLAYR$(PLAYER);", Full House means a pair and 3 of a kind!";
- 6990 GOSUB 8390
- 7000 IF ZERO=1 THEN 6800
- 7010 GOTO 5090
- 7020 'Small Straight no way
- 7030 IF SW=0 THEN 7040 ELSE BEEP
- 7040 LOCATE 24,15:PRINT "Hey, ";PLAYR$(PLAYER);", can't you even make a small straight??";
- 7050 GOSUB 8390
- 7060 IF ZERO=1 THEN 6800
- 7070 GOTO 5090
- 7080 'Large Straight no way
- 7090 IF SW=0 THEN 7100 ELSE BEEP
- 7100 LOCATE 24,7:PRINT "Hey, ";PLAYR$(PLAYER);", don't play poker if you want to keep your money!!";
- 7110 GOSUB 8390
- 7120 IF ZERO=1 THEN 6800
- 7130 GOTO 5090
- 7140 'YAHTZEE no way
- 7150 IF SW=0 THEN 7160 ELSE BEEP
- 7160 LOCATE 24,12:PRINT "Hey, Wise Guy, I mean ";PLAYR$(PLAYER);", this ain't no Yahtzee !!!";
- 7170 GOSUB 8390
- 7180 IF ZERO=1 THEN 6800
- 7190 GOTO 5090
- 7200 GOSUB 3950
- 7210 LOCATE 24,1
- 7220 PRINT "You have pressed the ";:COLOR 4:PRINT "QUIT";:COLOR 2:PRINT " button, press 'Y'to quit or 'N' to continue.";
- 7230 FOR BP=1 TO 3:BEEP:FOR BQ=1 TO 500:NEXT BQ:NEXT BP
- 7240 K$ = INKEY$
- 7250 IF K$="Y" OR K$="y" THEN 7280
- 7260 IF K$="N" OR K$="n" THEN 7370
- 7270 GOTO 7240
- 7280 SCREEN 0,1,0:WIDTH 40
- 7290 IF LEN(INKEY$) THEN 7290
- 7300 WIDTH 80:COLOR 2
- 7310 LOCATE 10,15
- 7320 PRINT "You are still in basic. If you press 'N', you will";
- 7330 LOCATE 12,15
- 7340 PRINT "drop into DOS. Press anything else to stay in basic.";
- 7350 K$=INKEY$:IF K$="N" OR K$="n" THEN SYSTEM
- 7360 IF K$<>"" THEN END ELSE 7350
- 7370 GOSUB 8580:VIEW PRINT :RETURN
- 7380 'Module for scorekeeper
- 7390 'Collect player names and scores-game 1
- 7400 TOTAL(1)=T4:T4=0
- 7410 TOTAL(2)=T14:T14=0
- 7420 TOTAL(3)=T24:T24=0
- 7430 TOTAL(4)=T34:T34=0
- 7440 T5=0:T15=0:T25=0:T35=0
- 7450 IF PLAYER >4 THEN PLAYER=4
- 7460 FOR I=1 TO PLAYER
- 7470 KEEP(GAME,I)=TOTAL(I)
- 7480 NEXT I
- 7490 IF GAME=1 THEN RETURN
- 7500 SCREEN 0,1,0
- 7510 '
- 7520 CLS
- 7530 COLOR 1
- 7540 IF PLAYERS=4 THEN CO=16
- 7550 IF PLAYERS=3 THEN CO=21
- 7560 IF PLAYERS=2 THEN CO=26
- 7570 IF PLAYERS=1 THEN CO=31
- 7580 FOR I=1 TO PLAYER
- 7590 LOCATE 3,CO+(10*I)
- 7600 PRINT USING "\ \";PLAYR$(I);
- 7610 NEXT I
- 7620 FOR G=1 TO GAME
- 7630 ROW=G+4
- 7640 COLOR 8+G
- 7650 LOCATE ROW,CO
- 7660 PRINT "Game ";G;
- 7670 COLOR 2
- 7680 FOR I=1 TO PLAYERS
- 7690 LOCATE ROW,CO+(10*I)
- 7700 PRINT USING "####";KEEP(G,I);
- 7710 COLOR 3
- 7720 IF WINNER(G,I)=1 THEN PRINT " *";
- 7730 COLOR 2
- 7740 NEXT I
- 7750 NEXT G
- 7760 ROW=12
- 7770 LOCATE ROW,CO
- 7780 PRINT "Totals";
- 7790 FOR I=1 TO PLAYERS
- 7800 FOR G=1 TO GAME
- 7810 GRAND=GRAND+KEEP(G,I)
- 7820 NEXT G
- 7830 LOCATE ROW,CO+(10*I)
- 7840 COLOR 12
- 7850 PRINT USING "####";GRAND
- 7860 GRAND=0:NEXT I
- 7870 IF GAME=6 THEN 7990
- 7880 COLOR 3
- 7890 LOCATE 22,20
- 7900 PRINT "* - Indicates winner of individual game";
- 7910 COLOR 12
- 7920 LOCATE 25,28
- 7930 PRINT "Press any key to continue";
- 7940 GOSUB 8140
- 7950 K$=INKEY$:IF K$="" THEN 7950
- 7960 WIDTH 40
- 7970 WIDTH 80
- 7980 RETURN
- 7990 LOCATE 14,1:COLOR 6
- 8000 PRINT "You have played six games of Yahtzee. The winner should buy everybody dinner!!"
- 8010 LOCATE 16,25:COLOR 13
- 8020 PRINT "Unless it's me, that is.";
- 8030 LOCATE 18,25:COLOR 12
- 8040 PRINT "Press any key to continue.";
- 8050 GOSUB 8140
- 8060 K$=INKEY$:IF K$<>"" THEN 7280 ELSE 8060
- 8070 'click sounds of dice
- 8080 IF SW=0 THEN RETURN
- 8090 SOUND FR1,DU
- 8100 SOUND FR2,DU
- 8110 SOUND FR3,DU
- 8120 SOUND FR1,DU
- 8130 RETURN
- 8140 IF SW=0 THEN RETURN 'Attention sound-needs player entry
- 8150 SOUND 1200,1
- 8160 RETURN
- 8170 'Sound switch
- 8180 IF SW=0 THEN SW=1:GOTO 8200
- 8190 IF SW=1 THEN SW=0
- 8200 GOSUB 3940
- 8210 SOU$="\ \"
- 8220 LOCATE 5,50
- 8230 IF SW=1 THEN COLOR 2,0:PRINT USING SOU$;"F9-Sound On";
- 8240 IF SW=0 THEN COLOR 4,0:PRINT USING SOU$;"F9-Sound Off";
- 8250 '
- 8260 RETURN
- 8270 IF SW=0 THEN RETURN ELSE PLAY "MFL16T155O2"
- 8280 PLAY "CCD8E8F8O1B8O2E8O1B8O2G#8E8B8"
- 8290 PLAY "G#8O3E8O2B8O3E8O2B8O3G#8E8B8G#8O4E4
- 8300 PLAY "P8EEE8E8E8E8E4P8.
- 8310 PLAY "EE4P8.O2EE2
- 8320 RETURN
- 8330 IF SW=0 THEN RETURN ELSE 8340
- 8340 PLAY "MSL4O2T200CEGAB-A8G.ECEGAB-A8G.EFAO3CDE-D8"
- 8350 PLAY "C.O2ACEGAB-A8G.EGBO3DEFE8D.O2BCEGAB-"
- 8360 PLAY "A8G.ECEGAB-AGECEGAB-AGEFAO3CDE-DCO2A"
- 8370 PLAY "CEGAB-AGEGBO3DEFEDO2BCEGAB-AG"
- 8380 RETURN
- 8390 LOCATE 25,9:PRINT "Do you wish to RE-SELECT or ZERO this?? Enter 1 thru D or Z ";
- 8400 GOSUB 8140
- 8410 ZERO=0:GOSUB 9500
- 8420 GOSUB 8580
- 8430 RETURN
- 8440 IF CHEX=0 THEN RETURN
- 8450 GOSUB 3950
- 8460 GOSUB 8580
- 8470 NO=0
- 8480 LOCATE 25,20
- 8490 GOSUB 8140
- 8500 PRINT "You selected ";CHECK$(SELECT);", is that correct? (Y/N)";
- 8510 K$=INKEY$:IF K$="Y" OR K$="y" THEN GOSUB 8580:RETURN
- 8520 IF K$="N" OR K$="n" THEN 8540
- 8530 GOTO 8510
- 8540 NO=1:GOSUB 8580
- 8550 SCORE=0:RETURN
- 8560 WINNER(GAME + 1,WIN)=1
- 8570 RETURN
- 8580 GOSUB 3950:LOCATE 24,1:PRINT STRING$(79,32);
- 8590 LOCATE 25,1:PRINT STRING$(79,32);
- 8600 RETURN
- 8610 IF CHEX=1 THEN CHEX=0:GOTO 8630
- 8620 IF CHEX=0 THEN CHEX=1
- 8630 GOSUB 3940
- 8640 FORM$="\ \"
- 8650 LOCATE 4,50
- 8660 IF CHEX=0 THEN COLOR 4,0:PRINT USING FORM$;"F8-Verify Off";
- 8670 IF CHEX=1 THEN COLOR 2,0:PRINT USING FORM$;"F8-Verify On";
- 8680 '
- 8690 RETURN
- 8700 'reroll register
- 8710 L=VAL(K$)
- 8720 IF L=1 THEN GOTO 8770
- 8730 IF L=2 THEN GOTO 8790
- 8740 IF L=3 THEN GOTO 8810
- 8750 IF L=4 THEN GOTO 8830
- 8760 IF L=5 THEN GOTO 8850
- 8770 IF D1=0 THEN D1=1:GOTO 8870
- 8780 IF D1=1 THEN D1=O:GOTO 8900
- 8790 IF D2=0 THEN D2=1:GOTO 8870
- 8800 IF D2=1 THEN D2=O:GOTO 8900
- 8810 IF D3=0 THEN D3=1:GOTO 8870
- 8820 IF D3=1 THEN D3=O:GOTO 8900
- 8830 IF D4=0 THEN D4=1:GOTO 8870
- 8840 IF D4=1 THEN D4=O:GOTO 8900
- 8850 IF D5=0 THEN D5=1:GOTO 8870
- 8860 IF D5=1 THEN D5=O:GOTO 8900
- 8870 LOCATE 20,45+(6*L):COLOR 12,0
- 8880 L$=STR$(L):PRINT L$;
- 8890 COLOR 2:GOSUB 8140:RETURN
- 8900 LOCATE 20,45+(6*L):COLOR 2,0
- 8910 L$=STR$(L):PRINT L$;
- 8920 GOSUB 8140:RETURN
- 8930 'DICE$ FOR REROLL ON SPIN
- 8940 DICE$="":GOSUB 3940
- 8950 IF D1=1 THEN DICE$=DICE$+"1"
- 8960 IF D2=1 THEN DICE$=DICE$+"2"
- 8970 IF D3=1 THEN DICE$=DICE$+"3"
- 8980 IF D4=1 THEN DICE$=DICE$+"4"
- 8990 IF D5=1 THEN DICE$=DICE$+"5"
- 9000 FOR L=1 TO 5
- 9010 LOCATE 20,45+(6*L):COLOR 2,0
- 9020 L$=STR$(L):PRINT L$;
- 9030 NEXT L
- 9040 D1=0:D2=0:D3=0:D4=0:D5=0
- 9050 RETURN
- 9060 FOR P=1 TO LEN(DICE$)+1
- 9070 GOSUB 3940
- 9080 X=VAL(MID$(DICE$,P,1)):COLOR 0,4
- 9090 IF X<1 OR X>5 THEN 9170
- 9100 IF X=1 THEN LOCATE 16,50:C=50:GOSUB 9680
- 9110 IF X=2 THEN LOCATE 16,56:C=56:GOSUB 9680
- 9120 IF X=3 THEN LOCATE 16,62:C=62:GOSUB 9680
- 9130 IF X=4 THEN LOCATE 16,68:C=68:GOSUB 9680
- 9140 IF X=5 THEN LOCATE 16,74:C=74:GOSUB 9680
- 9150 GOSUB 8070
- 9160 ON X GOSUB 3540,3580,3620,3660,3700
- 9170 NEXT P
- 9180 COLOR 2,0:RETURN
- 9190 K$=INKEY$
- 9200 IF K$="1" THEN GOSUB 8700:GOTO 9260
- 9210 IF K$="2" THEN GOSUB 8700:GOTO 9260
- 9220 IF K$="3" THEN GOSUB 8700:GOTO 9260
- 9230 IF K$="4" THEN GOSUB 8700:GOTO 9260
- 9240 IF K$="5" THEN GOSUB 8700:GOTO 9260
- 9250 IF K$="r" OR K$="R" THEN GOSUB 8930:GOTO 9270
- 9260 GOTO 9190
- 9270 GOSUB 3950
- 9280 IF LEN(INKEY$) THEN 9280
- 9290 RETURN
- 9300 WIDTH 80:COLOR 2 'Module to read instructions-Yahtzee.doc
- 9310 OPEN "I",1,"YAHTZEE.DOC"
- 9320 L=0
- 9330 CLS
- 9340 IF EOF(1) THEN 9450
- 9350 LINE INPUT#1, A$
- 9360 PRINT USING F80$;A$
- 9370 L=L+1
- 9380 IF L=22 THEN 9420
- 9390 IF L=42 THEN 9420
- 9400 IF L=62 THEN 9420
- 9410 GOTO 9340
- 9420 PRINT:COLOR 6:PRINT TAB(28) "Press any key to continue";
- 9430 COLOR 2
- 9440 K$=INKEY$:IF K$<>"" THEN 9330 ELSE 9440
- 9450 CLOSE 1
- 9460 COLOR 6
- 9470 PRINT TAB(27)"Press any key to start play";
- 9480 COLOR 2
- 9490 K$=INKEY$:IF K$<>"" THEN RETURN ELSE 9490
- 9500 'Select choice
- 9510 K$=INKEY$
- 9520 IF K$="1" THEN SELECT=1:GOTO 9670
- 9530 IF K$="2" THEN SELECT=2:GOTO 9670
- 9540 IF K$="3" THEN SELECT=3:GOTO 9670
- 9550 IF K$="4" THEN SELECT=4:GOTO 9670
- 9560 IF K$="5" THEN SELECT=5:GOTO 9670
- 9570 IF K$="6" THEN SELECT=6:GOTO 9670
- 9580 IF K$="7" THEN SELECT=7:GOTO 9670
- 9590 IF K$="8" THEN SELECT=8:GOTO 9670
- 9600 IF K$="9" THEN SELECT=9:GOTO 9670
- 9610 IF K$="A" OR K$="a" THEN SELECT=10:GOTO 9670
- 9620 IF K$="B" OR K$="b" THEN SELECT=11:GOTO 9670
- 9630 IF K$="C" OR K$="c" THEN SELECT=12:GOTO 9670
- 9640 IF K$="D" OR K$="d" THEN SELECT=13:GOTO 9670
- 9650 IF K$="z" OR K$="Z" THEN ZERO=1:GOTO 9670
- 9660 GOTO 9510
- 9670 RETURN
- 9680 FOR I=16 TO 18:LOCATE I,C
- 9690 PRINT " ";
- 9700 NEXT
- 9710 RETURN
-